package com.fbli.scoket;

import java.io.*;
import java.net.InetAddress;
import java.net.Socket;

/***
 * 客户端，发送“hello,server”给服务端
 */
public class SocketTCP02Client {
    public static void main(String[] args) throws IOException {
        //1.连接服务端（ip,端口）
        //如果连接成功返回Socket对象
        Socket socket = new Socket(InetAddress.getLocalHost(), 9999);
        System.out.println("socket返回=" + socket);
        //2.连接上后，生成socket，通过
        //通过socket.getOutputStream()
        //得到和socket对象关联的输出流对象
        OutputStream outputStream = socket.getOutputStream();
        //字符输出流
        BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
        //3.通过输出流，写入数据到数据通道
        //outputStream.write("hello,server".getBytes());
        bufferedWriter.write("hello,server 字符流");
        bufferedWriter.newLine();//插入一个换行符，表示写入的内容结束，注意要求对方使用readLine()!!读取
        bufferedWriter.flush();//如果使用的字符流，需要手动刷新，否者数据不会写入数据通道
        //结束写入标记
        //socket.shutdownOutput();
        //
        InputStream inputStream = socket.getInputStream();
        //4.io读取，使用字符流,使用转换流将inputStream转成字符流
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        String s = bufferedReader.readLine();
        System.out.println(s);
        //关闭输出流，socket
        bufferedReader.close();//关闭外层流
        bufferedWriter.close();
        socket.close();
        System.out.println("客户端退出。。。");
    }

}
